Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

greplogs: refine output for issue triage #11

Closed
wants to merge 4 commits into from

Conversation

bcmills
Copy link
Contributor

@bcmills bcmills commented May 2, 2022

No description provided.

@bcmills bcmills changed the title Triage greplogs: refine output for issue triage May 2, 2022
@bcmills bcmills marked this pull request as draft May 2, 2022 20:26
@bcmills bcmills force-pushed the triage branch 2 times, most recently from 7795ea4 to eaec9ea Compare May 2, 2022 20:31
Bryan C. Mills added 2 commits May 2, 2022 16:34
This improves the ergonomics of the command for Go dashboard triage,
eliminating the need to set two flags that are essentially always
useful.
When --md is set, echo the shell-escaped 'greplogs' command line
itself at the beginning of the output to make the command easier to
reproduce when pasted into an issue report.

Add a --triage flag that adds checkboxes and a summary to the Markdown
output.

Apply the --omit flag to commits as well as builders, to more easily
filter out commits (especially subrepo commits) that are broken across
the board.
@bcmills bcmills marked this pull request as ready for review May 2, 2022 20:35
…ils> tag

This avoids some manual editing for pasting long lists of results into
GitHub issues.
@aclements
Copy link
Owner

The first three commits look totally fine (and I would be happy to land them but don't see an obvious way to land just part of a PR?). I definitely get where you're going with the fourth commit, but I'm somewhat skeptical of the approach.

return out, nil
}

_, err = runCommand("go", "mod", "init", "github.com/aclements/go-misc/greplogs/_embed")
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was certainly... unexpected. I assume the idea here is that we actually need to get whatever's at HEAD to get the current broken builders and there's not, like, an RPC API we can hit to get this?

If I'm understanding right, this definitely could use a comment explaining the rationale here. (Also, could we instead add a dashboard API to get this?)

The other thing I wonder is how well-defined this is at all. This will get the list of broken builders right now, but greplogs is all about digging back in history. Doesn't this mean it could miss real failures that happened before a builder was marked broken, and surface expected failures after a builder stops being marked broken?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume the idea here is that we actually need to get whatever's at HEAD to get the current broken builders and there's not, like, an RPC API we can hit to get this?

Correct. And even if there was an RPC API, because the configuration is encoded as a Go package we would have to push a new version of some server every time we wanted to update it.

If I'm understanding right, this definitely could use a comment explaining the rationale here.

Done!

Doesn't this mean it could miss real failures that happened before a builder was marked broken, and surface expected failures after a builder stops being marked broken?

Yep! That's why we only use this if the --triage flag is set — we don't have a log of which builders were broken at which commits (and that would be fairly tedious to maintain), so instead we bias toward over-suppressing failures for builders that are currently broken.

(If triage falls too far behind and a builder is already fixed, a user can explicitly notch out additional previously-broken builders using the --omit flag.)

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. And even if there was an RPC API, because the configuration is encoded as a Go package we would have to push a new version of some server every time we wanted to update it.

Don't we have to do redeploy whenever the broken builder list changes anyway? As far as most people are concerned, the broken builders are whatever's grayed out on the dashboard. If the dashboard was also serving this list via an API, it would match up with whatever's grayed out.

(There's a bigger question here of whether it makes sense for this to be configured in a giant Go struct that can't track history and requires a redeploy on any changes, but that's for another time...)

Also omit builders with known issues when --triage is set.

For golang/go#52653.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants